with Ada.Streams; use Ada.Streams;
with Interfaces; use Interfaces;
package BE_Interfaces is

   type Sint8_t   is new Integer_8;

   type Uint8_t   is new Unsigned_8;

   type Sint16_be is new Integer_16
   with Read => Read, Write => Output, Input => Input, Output => Output;

   type Uint16_be is new Unsigned_16
   with Read => Read, Write => Output, Input => Input, Output => Output;

   type Sint32_be is new Integer_32
   with Read => Read, Write => Output, Input => Input, Output => Output;

   type Uint32_be is new Unsigned_32
   with Read => Read, Write => Output, Input => Input, Output => Output;

   type Sint64_be is new Integer_64
   with Read => Read, Write => Output, Input => Input, Output => Output;

   type Uint64_be is new Unsigned_64
   with Read => Read, Write => Output, Input => Input, Output => Output;

-- private

   function Input (
      From : not null access Root_Stream_Type'Class
      ) return Sint16_be;

   procedure Output (
      To   : not null access Root_Stream_Type'Class;
      From : Sint16_be 
      );

   procedure Read (
      From : not null access Root_Stream_Type'Class;
      To   : out Sint16_be
      );

   ------------------------------------------

   function Input (
      From : not null access Root_Stream_Type'Class
      ) return Uint16_be;

   procedure Output (
      To   : not null access Root_Stream_Type'Class;
      From : Uint16_be 
      );

   procedure Read (
      From : not null access Root_Stream_Type'Class;
      To   : out Uint16_be
      );

   ------------------------------------------


   function Input (
      From : not null access Root_Stream_Type'Class
      ) return Sint32_be;

   procedure Output (
      To   : not null access Root_Stream_Type'Class;
      From : Sint32_be 
      );

   procedure Read (
      From : not null access Root_Stream_Type'Class;
      To   : out Sint32_be
      );

   ------------------------------------------

   function Input (
      From : not null access Root_Stream_Type'Class
      ) return Uint32_be;

   procedure Output (
      To   : not null access Root_Stream_Type'Class;
      From : Uint32_be 
      );

   procedure Read (
      From : not null access Root_Stream_Type'Class;
      To   : out Uint32_be
      );

   ------------------------------------------

   function Input (
      From : not null access Root_Stream_Type'Class
      ) return Sint64_be;

   procedure Output (
      To   : not null access Root_Stream_Type'Class;
      From : Sint64_be 
      );

   procedure Read (
      From : not null access Root_Stream_Type'Class;
      To   : out Sint64_be
      );

   ------------------------------------------

   function Input (
      From : not null access Root_Stream_Type'Class
      ) return Uint64_be;

   procedure Output (
      To   : not null access Root_Stream_Type'Class;
      From : Uint64_be 
      );

   procedure Read (
      From : not null access Root_Stream_Type'Class;
      To   : out Uint64_be
      );



end BE_Interfaces;
